Data communications is becoming increasingly important in today's society. Many media exists for transmitting data, including the airways, cable, and telephone lines. As technology develops, these types of media may be used in new ways. For example, video data, such as television, has traditionally been transmitted over either cable or the airways. However, technology enhancements may allow such transmissions to occur in a viable fashion over telephone lines. One problem associated with transmitting video over telephone lines is addressing how to transmit data to multiple locations, referred to herein as multicasting.
One format for communicating data is asynchronous transfer mode (ATM) format. Many other formats exist. According to one prior technique, an ATM switch addresses multicasting by identifying a data cell as a multicast cell and then making multiple copies of the cell. The multiple copies are stored in memory and transmitted at an appropriate time to each destination. A problem with this approach is the large amount of memory required to store multiple copies of the same data. In addition, writing multiple copies of data is time consuming and contributes to switch latency.
Another approach for addressing multicasting of data involves storing the associated data only once in memory. A pointer associated with each destination is stored that points to the stored data. This approach avoids having to store the same data numerous times. However, in this approach it is difficult to determine when to clear the data cell from memory. To do so conventionally requires a counter for each cell that keeps track of what pointers require the data. Storing such a counter is undesirable because of the large associated memory requirements. This problem is particularly acute where a given destination receives more than one type of communication, such as Internet data, telephone access, and television broadcasts. The multiple types of transmissions multiplies the number of possible destinations and thus increases the required size of each counter, further contributing to additional memory requirements.